#ifndef FDEB_UTILS_H
#define FDEB_UTILS_H

#include <cmath>

struct FPoint {
    double lon;
    double lat;
};

struct Vector2D {
    double x;
    double y;
};

// 插值
FPoint interpolate(const FPoint& p1, const FPoint& p2, double t);

// 点积
double dotProduct(const Vector2D& v1, const Vector2D& v2);

// 向量 p1->p2
Vector2D vector(const FPoint& p1, const FPoint& p2);

// 向量模长
double magnitude(const Vector2D& v);

// 单位向量
Vector2D normalize(const Vector2D& v);

// 中点
FPoint midpoint(const FPoint& p1, const FPoint& p2);

// 欧氏距离
double distance(const FPoint& p1, const FPoint& p2);

#endif // FDEB_UTILS_H
